/**
 * 表单验证
 */
var regExp = {};

/**
 * 内置正则表达式
 */
regExp.regex = {
    'zip'         : /^[0-9]{6}$/, //验证值是否为有效的邮政编码
    'alphaDash'   : /^[A-Za-z0-9\\-\\_]+$/, //验证值是否为字母和数字，下划线_及破折号-
    'chs'         : /^[\u4E00-\u9FA5]+$/u, //验证值只能是汉字
    'chsAlpha'    : /^[\u4E00-\u9FA5a-zA-Z]+$/u, //验证值只能是汉字、字母
    'chsAlphaNum' : /^[\u4E00-\u9FA5a-zA-Z0-9]+$/u, //验证值只能是汉字、字母和数字
    'chsDash'     : /^[\u4E00-\u9FA5a-zA-Z0-9\\_\\-]+$/u, //验证值只能是汉字、字母、数字和下划线_及破折号-
    'telOrMobile' : /^((0\d{2,3}-\d{7,8})|(1[3456789]\d{9}))$/, //验证座机或手机号
    'name'        : /^([\u4E00-\u9FA5]{1,20}|[a-zA-Z.s]{1,20})$/, //验证姓名
    'idCard'      : /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/, //验证值是否为有效的身份证格式
}

/**
 * 默认规则提示
 */
regExp.typeMsg = {
    'zip' : '：无效的邮政编码格式',
    'alphaDash' : '：只能是字母和数字，下划线_及破折号-',
    'chs'      : '：只能是汉字',
    'chsAlpha' : '：只能是汉字、字母',
    'chsAlphaNum' : '：只能是汉字、字母和数字',
    'chsDash' : '：只能是汉字、字母、数字和下划线_及破折号-',
    'telOrMobile' : '：只能是数字、破折号-',
    'name' : '：无效的姓名格式',
    'idCard' : '：无效的身份证格式',
};

/**
 * 过滤器
 * @param name 验证字段名
 * @param str 验证值
 * @param type 内置正则类型
 * @returns {{msg: *, bool: *}}
 */
regExp.filter = function (name, str, type) {
    if(regExp.regex[type].test(str)){
        return regExp.msg(true, 'ok');
    }else{
        return regExp.msg(false, name+regExp.typeMsg[type]);
    }
}

/**
 * 公共提示消息
 * @param bool
 * @param msg 信息
 * @returns {{msg: *, bool: *}}
 */
regExp.msg = function (bool, msg) {
    return {'bool':bool, 'msg':msg};
}